1. Field of the Invention
The present invention relates to the testing of microprocessors. It more specifically relates to a method and device of digital data transmission between a monitoring circuit integrated in a microprocessor chip and an analysis tool.
2. Related Art
FIG. 1 schematically shows an integrated circuit 10 comprising a microprocessor (μP) 12, an internal memory (MEM) 14, and input/output terminals (I/O) 16. Microprocessor 12 is intended to execute a program or a software stored in memory 14. Under control of the program, microprocessor 12 may process data provided by input/output terminals 16 or stored in memory 14 and read or write data through input/output terminals 16.
To check the proper operation of the microprocessor, a monitoring circuit 18 is generally integrated in integrated circuit 10. Monitoring circuit 18 is capable of reading specific data provided by microprocessor 12 on execution of a program, and of possibly processing the read data. Test terminals 22 connect monitoring circuit 18 to an analysis tool 24. Analysis tool 24 may process the received signals, for example, according to commands provided by a user, and ensure a detailed analysis of the operation of microprocessor 12. In particular, analysis tool 24 may determine the program instruction sequence really executed by microprocessor 12.
The number of test terminals 22 may be on the same order of magnitude as the number of input/output terminals 16, for example, from 200 to 400 terminals. Test terminals 22 as well as the connections of monitoring circuit 18 take up a significant silicon surface area, which causes an unwanted increase in the circuit cost. For this purpose, a first version of integrated circuit 10 comprising monitoring circuit 18 and test terminals 22 is produced in small quantities to debug the program of microprocessor 12 or “user program”. After this debugging, a version of integrated circuit 10 without monitoring circuit 18 and of test terminals 22 is sold. This requires forming two versions of the integrated circuit, which requires a significant amount of work and is relatively expensive. Further, the final chip is not necessarily identical to the tested chip.
To overcome the above-mentioned disadvantages, it is desired to form a monitoring circuit 18 which takes up a reduced surface area and only requires a reduced number of test terminals 22, which decreases the cost of the monitoring circuit. Monitoring circuit 18 can then be left on the finally sold integrated circuit 10.
It is thus desired to decrease the number of signals provided by monitoring circuit 18. For this purpose, certain logic operations are directly performed at the level of monitoring circuit 18 on the data measured at the level of microprocessor 12 to only transmit messages having an important information content.
Thus, standard IEEE-ISTO-5001 in preparation provides1 in its 1999 version, accessible, for example, on website www.ieee-isto.org/Nexus5001, a specific message exchange protocol between a monitoring circuit and an analysis tool for a monitoring circuit 18 requiring but a reduced number of test terminals 22.
Among the messages provided by monitoring circuit 18 according to standard IEEE-ISTO-5001, a message indicates the occurrence of a jump in the program executed by microprocessor 12. A jump corresponds to the passing from an initial instruction of the program to a destination instruction other than the instruction which follows the initial instruction in the sequence of instructions forming the program. Based on the jump messages transmitted by monitoring circuit 18, analysis tool 24 reconstitutes the sequence of instructions executed by microprocessor 12. The sequence of reconstituted instructions can then be compared with a sequence of instructions theoretically executed by microprocessor 12 to determine malfunctions of microprocessor 12.
Standard IEEE-ISTO-5001 defines a jump message formed of a header identifying the type of jump from among different types of jumps detectable by the monitoring circuit and of an integer indicating the number of instructions executed by the microprocessor since the last transmission of a jump message and, if necessary of data representative of the destination instruction address.
A program executed by a microprocessor generally comprises loops, a loop corresponding to the repetition, a number of times, of a sequence of instructions, a jump being performed from the last instruction of the loop to the first instruction of the loop. In specific applications, especially in telephony, the program may comprise a significant number of loops of small size. As an example, the copying of the content of a memory may be performed by a loop containing a single instruction and that can be implemented, according to the used technologies, by one or two operation clock cycles of the microprocessor.
Current microprocessors currently operate at clock frequencies reaching 400 MHz. However, according to the technologies used, the maximum frequency of transmission of messages by monitoring circuit 18 on test terminals 22 is generally limited to some hundred megahertz. On execution of a loop of small size, the frequency at which messages representative of the loop jumps should be transmitted by monitoring circuit 18 on test terminals 22 may exceed the maximum transmission frequency. This results in a saturation of the monitoring circuit which can no longer provide messages properly.
Further, according to standard IEEE-ISTO-5001, monitoring circuit 18 can provide a message each time microprocessor 12 executes an instruction for reading data stored in memory 14 or an instruction for writing data into memory 14. Accordingly, when a loop of small size comprises a read or write instruction, monitoring circuit 18 must transmit, on test terminals 22, in addition to the messages representative of the loop jumps, messages representative of the read or write operations, which can increase the risks of saturation of monitoring circuit 18.